<!DOCTYPE html>
<html lang=''>

<head>
    <meta charset='UTF-8'>
    <meta http-equiv='X-UA-Compatible' content='IE=edge'>
    <meta name='viewport' content='width=device-width, initial-scale=1.0'>
    <title>Document</title>
    <script src='./vue.js'></script>
</head>

<body>
    <div id='app'>
        <h1> 原价：{{ price }} </h1>
        <h1> 计算属性打折后：{{vipPrice}} </h1>
        <button @click="changPrice">点击修改 price</button>
    </div>
</body>
<script>
    // 1. 解构出计算属性函数
    const { ref, computed } = Vue

    const app = Vue.createApp({
        setup (props, context) {

            // 原价
            const price = ref(100)

            // vipPrice 打折之后的价格
            // 计算属性如果传递的是一个函数，那么该计算属性是只读的无法进行修改
            // let vipPrice = computed(() => {
            //     // console.log(price);
            //     return price.value / 2
            // })

            // 如果计算属性需要设置值，可以写成对象的方法
            let vipPrice = computed({
                get () {
                    return price.value / 2
                },
                set (val) {
                    price.value = val * 2
                }
            })

            function changPrice () {
                // 计算属性在设置值的时候也需要加 value
                vipPrice.value = 1000
            }

            return {
                price,
                vipPrice,
                changPrice
            }
        }
    })
    app.mount('#app')
</script>

</html>